#![allow(dead_code)]
use captcha::filters::{Noise, Wave};
use captcha::{by_name, Captcha, CaptchaName, Difficulty};
use std::fs;

fn main() {
    captcha_simple()
}


/// 随机生成一个4为的验证码
fn captcha_simple() {
    let mut captcha = Captcha::new();
    let captcha = captcha
        // 指定字符（生成的验证码只能包含指定数组中的字符）
        // .set_chars(&['a', 'c', '4', 'b'])
        // 4位验证码
        .add_chars(4)
        // 添加噪音（雪花） 数字越大雪花越多
        .apply_filter(Noise::new(0.1))
        // 生成的验证码在水平和垂直方向的偏移
        .apply_filter(Wave::new(2.0, 20.0).horizontal())
        .apply_filter(Wave::new(2.0, 20.0).vertical())
        // 设置图片的宽220px,高120px
        .view(220, 120)
        // 添加随机大小的黑点，参数为黑点个数
        // .apply_filter(Dots::new(5))
    ;
    let chars = captcha.chars();
    println!("验证码： {:?}", String::from_iter(chars));
    let png = captcha.as_png().unwrap();
    fs::write("./captcha-lib/output.png", &png).unwrap();
}

fn captcha_predefine() {
    let mut captcha = by_name(Difficulty::Easy, CaptchaName::Lucy);

    let captcha = captcha
        // 4位验证码
        .add_chars(4)
        // 添加噪音（雪花） 数字越大雪花越多
        .apply_filter(Noise::new(0.1))
        // 生成的验证码在水平和垂直方向的偏移
        .apply_filter(Wave::new(2.0, 20.0).horizontal())
        .apply_filter(Wave::new(2.0, 20.0).vertical())
        // .view(220, 120)
        // 添加随机大小的黑点，参数为黑点个数
        // .apply_filter(Dots::new(5))
        ;
    let chars = captcha.chars();
    println!("验证码： {:?}", String::from_iter(chars));
    let png = captcha.as_png().unwrap();
    fs::write("./captcha-lib/output.png", &png).unwrap();
}